;;;; Copyright 2009 Peter von Etter

;;;; This file is part of Faslpath.

;;;; Faslpath is free software: you can redistribute it and/or modify
;;;; it under the terms of the GNU Lesser General Public License as
;;;; published by the Free Software Foundation, either version 3 of
;;;; the License, or (at your option) any later version.
;;;;
;;;; Faslpath is distributed in the hope that it will be useful, but
;;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;;;; Lesser General Public License for more details.
;;;;
;;;; You should have received a copy of the GNU Lesser General Public
;;;; License along with Faslpath.  If not, see
;;;; <http://www.gnu.org/licenses/>.


;;;; People who want errors instead if style warnings for accidental
;;;; redefinition of stuff in other packages can USE this package
;;;; instead of CL

'() ;; No deps

(defpackage #:faslpath.cl
  (:use #:cl)
  (:shadow "DEFUN" 
           "DEFVAR"
           "DEFGENERIC"
           "DEFPARAMETER"
           "DEFCLASS"
           "DEFSTRUCT"
           "DEFINE-CONDITION")  
  (:export ;; All of CL
   "THROW" "FUNCTION-LAMBDA-EXPRESSION" "CHAR=" "DOUBLE-FLOAT-EPSILON" "PROGV"
   "WITH-OUTPUT-TO-STRING" "FFLOOR" "HASH-TABLE-SIZE" "ECHO-STREAM-INPUT-STREAM"
   "/=" "SLOT-EXISTS-P" "LDB" "COSH" "UPDATE-INSTANCE-FOR-REDEFINED-CLASS"
   "CAADAR" "SET-MACRO-CHARACTER" "MACHINE-INSTANCE"
   "TWO-WAY-STREAM-INPUT-STREAM" "&ALLOW-OTHER-KEYS" "*PRINT-LENGTH*"
   "SHORT-SITE-NAME" "*READ-BASE*" "UNBOUND-SLOT-INSTANCE" "COMPLEXP"
   "LIST-ALL-PACKAGES" "GET-INTERNAL-RUN-TIME" "READTABLE" "NINTH" "SYMBOL-VALUE"
   "SIMPLE-VECTOR" "CAAADR" "TYPE-OF" "STRING-STREAM" "ARRAYP" "SINGLE-FLOAT"
   "MAKE-INSTANCE" "CIS" "PPRINT-TAB" "GET-DISPATCH-MACRO-CHARACTER"
   "DEPOSIT-FIELD" "DELETE-IF" "CALL-METHOD" "CONTINUE" "SYMBOL-PLIST" "IF" "TAN"
   "DIVISION-BY-ZERO" "CDDDDR" "COMPILE-FILE" "ELT" "SHADOWING-IMPORT" "DESCRIBE"
   "FCEILING" "TAILP" "PPRINT-LOGICAL-BLOCK" "*PRINT-READABLY*" "REMOVE-METHOD"
   "SUBST-IF" "METHOD" "POSITION-IF" "UNWIND-PROTECT" "SLOT-MISSING" "PI" "CASE"
   "DEFINE-CONDITION" "SCALE-FLOAT" "RANDOM-STATE" "CHAR-DOWNCASE"
   "*COMPILE-VERBOSE*" "FIFTH" "CHAR>" "READ-SEQUENCE"
   "UPDATE-INSTANCE-FOR-DIFFERENT-CLASS" "VECTOR-PUSH" "*QUERY-IO*" "NAME-CHAR"
   "CHAR-UPCASE" "MERGE" "COPY-SYMBOL" "COUNT-IF" "METHOD-QUALIFIERS" "SETF"
   "EQL" "DELETE-FILE" "BOOLE-SET" "BOOLE-C2" "DELETE-PACKAGE" "ODDP" "PRINC"
   "UNDEFINED-FUNCTION" "STRING-TRIM" "INVOKE-RESTART" "*TERMINAL-IO*"
   "*RANDOM-STATE*" "*READ-EVAL*" "MACHINE-TYPE" "*PRINT-RIGHT-MARGIN*"
   "WITH-PACKAGE-ITERATOR" "STANDARD" "WRITE-SEQUENCE" "FLOATING-POINT-INEXACT"
   "NSUBST-IF" "CONCATENATE" "*DEBUGGER-HOOK*" "PACKAGE-ERROR" "1+"
   "DELETE-IF-NOT" "PACKAGE-USED-BY-LIST" "FLOOR" "LOGEQV"
   "ARITHMETIC-ERROR-OPERANDS" "MOST-POSITIVE-DOUBLE-FLOAT" "DEFSETF" "REMOVE-IF"
   "CHAR/=" "LEAST-POSITIVE-LONG-FLOAT" "Y-OR-N-P" "PPRINT-TABULAR" "BOOLE"
   "WRITE-TO-STRING" "SAFETY" "BOOLE-ANDC1" "WITH-SIMPLE-RESTART" "LOGIOR" "STEP"
   "PATHNAME-VERSION" "LEAST-NEGATIVE-SINGLE-FLOAT" "SYMBOL-MACROLET" "RETURN"
   "STYLE-WARNING" "*PACKAGE*" "LEAST-POSITIVE-SINGLE-FLOAT" "NUMBER"
   "SIMPLE-ERROR" "SEARCH" "WITH-INPUT-FROM-STRING" "*READTABLE*" "USE-VALUE"
   "*COMPILE-PRINT*" "LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT" "EXPORT"
   "SIMPLE-TYPE-ERROR" "LEAST-NEGATIVE-LONG-FLOAT" "LONG-FLOAT-NEGATIVE-EPSILON"
   "LOGICAL-PATHNAME" "///" "LOAD-TIME-VALUE" "GET-UNIVERSAL-TIME"
   "MOST-NEGATIVE-LONG-FLOAT" "LOGANDC2" "READ" "PRINT-NOT-READABLE-OBJECT"
   "DEFPACKAGE" "RESTART" "MAKE-PATHNAME" "LISTP" "PACKAGE-NAME" "REMOVE"
   "APROPOS" "CALL-NEXT-METHOD" "CHAR>=" "CDADDR" "LISP-IMPLEMENTATION-VERSION"
   "CERROR" "FIND-IF-NOT" "MOST-POSITIVE-LONG-FLOAT" "BOOLE-XOR"
   "LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT" "DISASSEMBLE" "RATIONALP"
   "MULTIPLE-VALUE-BIND" "STANDARD-OBJECT" "NSUBST" "DOTIMES" "MAKE-RANDOM-STATE"
   "ZEROP" "ED" "ISQRT" "SYMBOLP" "UNEXPORT" "MASK-FIELD" "CHAR-GREATERP"
   "READ-FROM-STRING" "DEFINE-METHOD-COMBINATION" "FLOAT-PRECISION"
   "MULTIPLE-VALUES-LIMIT" "DEFCONSTANT" "BIT-NOT" "STANDARD-GENERIC-FUNCTION"
   "DELETE-DUPLICATES" "SET-PPRINT-DISPATCH" "SVREF" "PARSE-INTEGER"
   "MACROEXPAND-1" "EVAL" "STREAM-ERROR-STREAM" "SUBST-IF-NOT" "CHAR<"
   "VECTOR-PUSH-EXTEND" "MOST-POSITIVE-FIXNUM" "MAKE-CONCATENATED-STREAM"
   "STRING/=" "EQ" "SUBSTITUTE-IF" "ARRAY-RANK-LIMIT" "LIST*" "FRESH-LINE" "SETQ"
   "INTERACTIVE-STREAM-P" "RANDOM-STATE-P" "VARIABLE" "CADDR" "LOGNOR" "TRUNCATE"
   "VECTOR-POP" "STABLE-SORT" "DRIBBLE" "FIND-ALL-SYMBOLS" "BOOLEAN"
   "WITH-OPEN-FILE" "FLOATING-POINT-OVERFLOW" "DEFMACRO" "RANDOM" "CCASE" "LCM"
   "CLASS" "CONDITION" "SBIT" "SPEED" "GENTEMP" "MOD" "SHARED-INITIALIZE"
   "ADJUSTABLE-ARRAY-P" "*READ-DEFAULT-FLOAT-FORMAT*" "POP" "GET-DECODED-TIME"
   "SIGNAL" "&ENVIRONMENT" "NO-NEXT-METHOD" "CHARACTER" "DECF" "LOCALLY" "CLOSE"
   "RENAME-PACKAGE" "HANDLER-CASE" "STRING>=" "STRING-NOT-GREATERP"
   "MAKE-BROADCAST-STREAM" "CLASS-NAME" "FIND-IF" "LOGCOUNT" "SUBSTITUTE-IF-NOT"
   "STANDARD-CHAR-P" "OPTIMIZE" "CONSP" "EXPT" "SCHAR" "UNION" "BASE-CHAR" "SINH"
   "SIMPLE-BIT-VECTOR" "STANDARD-CLASS" "NRECONC" "READTABLEP" "CDAADR"
   "LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT" "NSUBSTITUTE-IF"
   "FLOATING-POINT-INVALID-OPERATION" "PACKAGEP" "REALP" "FILL-POINTER"
   "COMPUTE-RESTARTS" "RENAME-FILE" "***" "MULTIPLE-VALUE-LIST"
   "COMPILATION-SPEED" "READ-PRESERVING-WHITESPACE" "INTEGER" "CELL-ERROR-NAME"
   "MAKE-HASH-TABLE" "READER-ERROR" "ALPHANUMERICP" "LIST" "MAPCAR"
   "REMOVE-DUPLICATES" "IMPORT" "TYPE-ERROR-DATUM" "RATIONAL" "PLUSP" "MAPC"
   "MAKUNBOUND" "&AUX" "TRACE" "BOOLE-NOR" "ASSOC-IF-NOT" "MAKE-TWO-WAY-STREAM"
   "CDDADR" "DIGIT-CHAR-P" "ROOM" "PATHNAME-HOST" "MEMBER-IF-NOT" "REVERSE"
   "NSTRING-UPCASE" "ASINH" "LONG-SITE-NAME" "METHOD-COMBINATION-ERROR" "FIND"
   "PATHNAME" "STRING-EQUAL" "UNINTERN" "DECLARE" "PROG2" "SQRT" "MAPCON"
   "EXTENDED-CHAR" "MAKE-LOAD-FORM-SAVING-SLOTS" "CAAAR" "CDR" "SEVENTH"
   "CHAR-NOT-EQUAL" "VALUES-LIST" "EVAL-WHEN" "INITIALIZE-INSTANCE" "SIGNED-BYTE"
   "FINISH-OUTPUT" "GET-OUTPUT-STREAM-STRING" "NOTANY" "COMPILER-MACRO-FUNCTION"
   "MERGE-PATHNAMES" "NSUBSTITUTE-IF-NOT" "BIT-VECTOR" "SYMBOL" "THE" "EVENP"
   "WRITE" "SXHASH" "*LOAD-PATHNAME*" "ADD-METHOD" "SPECIAL-OPERATOR-P" "SOME"
   "MAKE-CONDITION" "PROG1" "EQUAL" "FIND-SYMBOL" "BASE-STRING" "STRING-LESSP"
   "MAPHASH" "NSUBST-IF-NOT" "COERCE" "STREAM-ELEMENT-TYPE" "REPLACE"
   "CHAR-NOT-LESSP" "LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT" "PATHNAME-NAME" "/"
   "SET-SYNTAX-FROM-CHAR" "SLOT-MAKUNBOUND" "RPLACA" "&KEY" "WITH-OPEN-STREAM"
   "PRINT" "AREF" "MULTIPLE-VALUE-PROG1" "POSITION-IF-NOT" "DO" "NEXT-METHOD-P"
   "VECTORP" "&BODY" "COPY-LIST" "CADDDR" "TWO-WAY-STREAM" "DIGIT-CHAR" "SUBST"
   "FLOAT-DIGITS" "BOTH-CASE-P" "PROGRAM-ERROR" "GRAPHIC-CHAR-P" "UNUSE-PACKAGE"
   "STRING" "*BREAK-ON-SIGNALS*" "REALPART" "*PRINT-PRETTY*" "CHAR-EQUAL"
   "STREAM" "&WHOLE" "CAADR" "*PRINT-RADIX*" "*FEATURES*" "MUFFLE-WARNING"
   "*PRINT-CIRCLE*" "BOOLE-EQV" "DEBUG" "DYNAMIC-EXTENT"
   "LEAST-NEGATIVE-DOUBLE-FLOAT" "WRITE-STRING" "PRIN1" "SIMPLE-CONDITION"
   "POSITION" "COMPILE" "ENDP" "PATHNAMEP" "MEMBER-IF" "BYTE"
   "LONG-FLOAT-EPSILON" "NTHCDR" "ASH" "GET-INTERNAL-REAL-TIME" "LDIFF" "RATIO"
   "RESTART-BIND" "MAKE-LIST" "MAPCAN" "STRING-GREATERP" "ABS" "GETHASH"
   "FDEFINITION" "THIRD" "WITH-COMPILATION-UNIT" "NUMBERP"
   "*COMPILE-FILE-PATHNAME*" "WILD-PATHNAME-P" "DO-EXTERNAL-SYMBOLS"
   "SINGLE-FLOAT-EPSILON" "FLOAT-RADIX" "DO*" "CODE-CHAR" "SECOND" "BOOLE-1"
   "SIXTH" "DEFPARAMETER" "FIRST" "LIST-LENGTH" "LOG" "LONG-FLOAT" "INSPECT"
   "RESTART-CASE" "CAAR" "ARRAY-DIMENSION-LIMIT" "SPACE" "ATOM"
   "CONCATENATED-STREAM-STREAMS" "CELL-ERROR" "*COMPILE-FILE-TRUENAME*"
   "*PRINT-GENSYM*" "NO-APPLICABLE-METHOD" "OTHERWISE" "CADADR" "FTYPE" "STRING>"
   "DEFVAR" "MEMBER" "TANH" "OPEN" "SOFTWARE-TYPE" "INCF" "LENGTH"
   "UNSIGNED-BYTE" "FUNCTION-KEYWORDS" "MAKE-SYNONYM-STREAM" "-" "END-OF-FILE"
   "ATANH" "FIND-PACKAGE" "RESTART-NAME" "BIT-ORC1" "IGNORABLE"
   "STRING-LEFT-TRIM" "SIMPLE-WARNING" "ARRAY-IN-BOUNDS-P" "SHORT-FLOAT"
   "BIT-ORC2" "DOUBLE-FLOAT" "PARSE-NAMESTRING" "MACROLET" "NCONC" "REQUIRE"
   "SHADOW" "CDDDR" "CADDAR" "ARRAY-DIMENSION" "COPY-SEQ" "ACONS" "*LOAD-PRINT*"
   "PUSH" "FIND-METHOD" "DEFGENERIC" "RETURN-FROM" "LET" "GCD" "MAX" "WARN"
   "COMPLEX" "METHOD-COMBINATION" "LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT"
   "SYMBOL-PACKAGE" "CHARACTERP" "FORCE-OUTPUT" "CEILING" "LDB-TEST"
   "DIRECTORY-NAMESTRING" "GET-SETF-EXPANSION" "MAP-INTO" "LOGANDC1" "RASSOC-IF"
   "CTYPECASE" "MACRO-FUNCTION" "DOUBLE-FLOAT-NEGATIVE-EPSILON"
   "LOAD-LOGICAL-PATHNAME-TRANSLATIONS" "FILE-STRING-LENGTH" "PRIN1-TO-STRING"
   "LAMBDA" "READ-DELIMITED-LIST" "MOST-POSITIVE-SINGLE-FLOAT" "BOOLE-2"
   "RATIONALIZE" "DOCUMENTATION" "TAGBODY" "COPY-READTABLE" "NTH" "FILL"
   "FUNCALL" "KEYWORD" "DECODE-UNIVERSAL-TIME" "CONJUGATE" "SYMBOL-FUNCTION"
   "INTEGER-DECODE-FLOAT" "DO-ALL-SYMBOLS" "*PRINT-LINES*" "CHAR-NOT-GREATERP"
   "NINTERSECTION" "DECLARATION" "PPRINT-EXIT-IF-LIST-EXHAUSTED"
   "LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT" "PAIRLIS" "CAAAAR" "SLOT-VALUE"
   "GENERIC-FUNCTION" "GET-MACRO-CHARACTER" "ACOSH" "MAKE-ARRAY"
   "ENSURE-DIRECTORIES-EXIST" "SHORT-FLOAT-EPSILON" "INVOKE-DEBUGGER" "LOGBITP"
   "STRING-UPCASE" "BOOLE-ORC2" "MOST-NEGATIVE-SINGLE-FLOAT" "REMPROP"
   "PATHNAME-DIRECTORY" "MACHINE-VERSION" "PUSHNEW" "ASIN" "SET-DIFFERENCE"
   "SIMPLE-STRING" "DPB" "*GENSYM-COUNTER*" "SIMPLE-VECTOR-P" "CDDAAR"
   "COMPILER-MACRO" "NSUBSTITUTE" "ROW-MAJOR-AREF" "CDDDAR" "STRING-CAPITALIZE"
   "DECODE-FLOAT" "LOGXOR" "BOUNDP" "MAKE-ECHO-STREAM" "NULL" "*LOAD-VERBOSE*"
   "PPRINT" "TYPEP" "FLET" "ARRAY-ROW-MAJOR-INDEX" "SERIOUS-CONDITION"
   "ENCODE-UNIVERSAL-TIME" "GET" "LAST" "USE-PACKAGE" "PPRINT-FILL"
   "WITH-STANDARD-IO-SYNTAX" "FMAKUNBOUND" "COND" "SET" "SYMBOL-NAME" "ASSOC"
   "LAMBDA-LIST-KEYWORDS" "*PRINT-PPRINT-DISPATCH*" "LOOP" "IN-PACKAGE"
   "MULTIPLE-VALUE-SETQ" "IGNORE" "CHECK-TYPE" "NTH-VALUE"
   "SIMPLE-CONDITION-FORMAT-CONTROL" "NAMESTRING" "REINITIALIZE-INSTANCE"
   "READ-CHAR" "HASH-TABLE-TEST" "*PRINT-ESCAPE*" "SYNONYM-STREAM-SYMBOL"
   "LOGNOT" "HASH-TABLE-P" "LOGAND" "WITH-ACCESSORS" "NSET-EXCLUSIVE-OR"
   "TREE-EQUAL" "STRINGP" "CDAAAR" "PACKAGE" "PATHNAME-MATCH-P" "ETYPECASE"
   "ADJUST-ARRAY" "DENOMINATOR" "CDADAR" "SHIFTF" "ERROR" "*TRACE-OUTPUT*"
   "HOST-NAMESTRING" "SLOT-BOUNDP" "ALLOCATE-INSTANCE" "STORE-VALUE"
   "ARRAY-HAS-FILL-POINTER-P" "SIMPLE-BASE-STRING" "FIND-RESTART"
   "COPY-PPRINT-DISPATCH" "INTEGERP" "*PRINT-LEVEL*" "CLRHASH" "NUNION"
   "ARRAY-ELEMENT-TYPE" "STRING-RIGHT-TRIM" "SIMPLE-BIT-VECTOR-P" "FILE-ERROR"
   "ALPHA-CHAR-P" "YES-OR-NO-P" "SINGLE-FLOAT-NEGATIVE-EPSILON" "APROPOS-LIST"
   "FBOUNDP" "FIXNUM" "DELETE" "PARSE-ERROR" "COUNT" "CDAAR" "PPRINT-DISPATCH"
   "CLEAR-OUTPUT" "FILE-STREAM" "MAPLIST" "*DEBUG-IO*" "FLOAT-SIGN" "CHAR-CODE"
   "BOOLE-IOR" "BLOCK" "SIMPLE-CONDITION-FORMAT-ARGUMENTS"
   "LEAST-NEGATIVE-SHORT-FLOAT" "WRITE-CHAR" "LISTEN" "CADAR" "FILE-NAMESTRING"
   "*STANDARD-OUTPUT*" "FLOATING-POINT-UNDERFLOW" "BOOLE-NAND" "DESCRIBE-OBJECT"
   "CONSTANTLY" "MAKE-LOAD-FORM" "PATHNAME-DEVICE" "EXP" "CHAR-NAME"
   "HASH-TABLE-REHASH-SIZE" "SUBLIS" "INTEGER-LENGTH" "SLEEP"
   "ARRAY-DISPLACEMENT" "ECHO-STREAM" "COS" "SHORT-FLOAT-NEGATIVE-EPSILON"
   "DOLIST" "UNREAD-CHAR" "LEAST-POSITIVE-NORMALIZED-LONG-FLOAT" "ACOS" "ARRAY"
   "<" "PHASE" "PATHNAME-TYPE" "INLINE" "CHAR" "MAKE-SYMBOL"
   "TYPE-ERROR-EXPECTED-TYPE" "LOGICAL-PATHNAME-TRANSLATIONS"
   "DESTRUCTURING-BIND" "MAKE-DISPATCH-MACRO-CHARACTER"
   "SET-DISPATCH-MACRO-CHARACTER" "PRINT-OBJECT" "REMHASH" "BREAK"
   "PPRINT-INDENT" "ROTATEF" "CLEAR-INPUT" "STRING<=" "LOGNAND" "FILE-AUTHOR"
   "<=" "TYPE" "*ERROR-OUTPUT*" "BIT-AND" "COPY-TREE" "BOOLE-C1"
   "LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT" "COMPUTE-APPLICABLE-METHODS"
   "NOTEVERY" "LOGORC1" "WHEN" "HASH-TABLE" "MIN" "ECHO-STREAM-OUTPUT-STREAM"
   "CDAR" "SIMPLE-ARRAY" "UPPER-CASE-P" "WRITE-BYTE" "FILE-LENGTH"
   "MULTIPLE-VALUE-CALL" "BROADCAST-STREAM" "CONTROL-ERROR" "STANDARD-CHAR"
   "CADR" "ADJOIN" "SUBSETP" "ARRAY-TOTAL-SIZE-LIMIT" "SEQUENCE"
   "LEAST-POSITIVE-DOUBLE-FLOAT" "SORT" "PROBE-FILE" "STRING-DOWNCASE"
   "ARRAY-DIMENSIONS" "LOAD" "COMPILED-FUNCTION" "NSET-DIFFERENCE"
   "BUILT-IN-CLASS" "REVAPPEND" "MAKE-METHOD" "//" "NOT" "SUBTYPEP" "WRITE-LINE"
   "ASSERT" "COPY-ALIST" "+++" "USER-HOMEDIR-PATHNAME" "SPECIAL" "ECASE"
   "RASSOC-IF-NOT" "CALL-ARGUMENTS-LIMIT" "*MODULES*" "TYPE-ERROR" "REMF" "GO"
   "UNTRACE" "BOOLE-CLR" "HASH-TABLE-COUNT" "NIL" "CHAR-INT" "DEFCLASS" "CDADR"
   "REDUCE" "ARITHMETIC-ERROR-OPERATION" "HANDLER-BIND" "MAP" "NSTRING-DOWNCASE"
   "CATCH" "BYTE-SIZE" "**" "UNLESS" "GETF" "PACKAGE-ERROR-PACKAGE"
   "NSTRING-CAPITALIZE" "CAR" "PPRINT-LINEAR" "CHAR-CODE-LIMIT" "WARNING" "OR"
   "CDDAR" "TRANSLATE-PATHNAME" "*PRINT-ARRAY*" "ENSURE-GENERIC-FUNCTION"
   "OUTPUT-STREAM-P" "READ-CHAR-NO-HANG" "=" "FTRUNCATE"
   "BROADCAST-STREAM-STREAMS" "PACKAGE-SHADOWING-SYMBOLS" "ABORT" "FILE-POSITION"
   "*" "DEFINE-SETF-EXPANDER" "COPY-STRUCTURE" "FUNCTION" "BIT" "LOOP-FINISH"
   "WITH-HASH-TABLE-ITERATOR" "DO-SYMBOLS" "BOOLE-ORC1" "PROCLAIM" "NBUTLAST"
   "MACROEXPAND" "APPEND" "READTABLE-CASE" "SATISFIES" "*MACROEXPAND-HOOK*"
   "OPEN-STREAM-P" "PROG*" "BIT-NOR" "BIT-IOR" "INTERN" "PSETF"
   "STREAM-EXTERNAL-FORMAT" "TIME" "REST" "MAKE-INSTANCES-OBSOLETE"
   "HASH-TABLE-REHASH-THRESHOLD" "PACKAGE-NICKNAMES" "MAKE-STRING" "FIND-CLASS"
   "MAKE-STRING-INPUT-STREAM" "STRING<" "LAMBDA-PARAMETERS-LIMIT" "PROG"
   "STRUCTURE-OBJECT" "SIMPLE-STRING-P" "T" "EVERY" "MOST-NEGATIVE-DOUBLE-FLOAT"
   "DEFINE-MODIFY-MACRO" "VALUES" "TENTH" "BYTE-POSITION" "FILE-WRITE-DATE"
   "CONCATENATED-STREAM" "BIT-EQV" "REMOVE-IF-NOT" "GENSYM"
   "MAKE-STRING-OUTPUT-STREAM" "EIGHTH" "FLOATP" "PRINT-UNREADABLE-OBJECT"
   "PPRINT-POP" "BOOLE-ANDC2" "APPLY" "BUTLAST" "STREAM-ERROR" "CLASS-OF"
   "STRUCTURE-CLASS" "DEFSTRUCT" "BIGNUM" "STORAGE-CONDITION" "SOFTWARE-VERSION"
   "CONS" "ARRAY-RANK" "UPGRADED-ARRAY-ELEMENT-TYPE" "FORMAT" "CHAR-LESSP"
   "PROGN" "FLOAT" "COMPILE-FILE-PATHNAME" "ROUND" "INVOKE-RESTART-INTERACTIVELY"
   "CONSTANTP" "NUMERATOR" "&REST" "&OPTIONAL" "TWO-WAY-STREAM-OUTPUT-STREAM"
   "STRUCTURE" "DIRECTORY" "LOGORC2" "TYPECASE" "ASSOC-IF" "BIT-ANDC2"
   "GET-PROPERTIES" "READ-BYTE" "MISMATCH" "STRING-NOT-EQUAL"
   "MOST-NEGATIVE-SHORT-FLOAT" "CADAAR" "STRING-NOT-LESSP"
   "LISP-IMPLEMENTATION-TYPE" "ATAN" "CHANGE-CLASS" "++"
   "MOST-POSITIVE-SHORT-FLOAT" "DEFUN" "MAKE-SEQUENCE" "SUBSEQ"
   "INTERNAL-TIME-UNITS-PER-SECOND" "STREAMP" "PEEK-CHAR" "BOOLE-AND"
   "LOWER-CASE-P" "UNBOUND-VARIABLE" "CAADDR" "BIT-XOR" "ARITHMETIC-ERROR"
   "LEAST-POSITIVE-SHORT-FLOAT" "NOTINLINE" "COMPILED-FUNCTION-P" "PROVIDE"
   "SIGNUM" "INVALID-METHOD-ERROR" "INPUT-STREAM-P" "FILE-ERROR-PATHNAME"
   "FORMATTER" "*LOAD-TRUENAME*" "PRINC-TO-STRING" "ENOUGH-NAMESTRING" "+"
   "RPLACD" "FOURTH" "PRINT-NOT-READABLE" "SUBSTITUTE" "QUOTE" "*PRINT-BASE*"
   "*STANDARD-INPUT*" "FUNCTIONP" "CHAR<=" "ARRAY-TOTAL-SIZE" "AND" ">="
   "*READ-SUPPRESS*" "KEYWORDP" "TERPRI" "READ-LINE" "PPRINT-NEWLINE" ">" "PSETQ"
   "1-" "LOGTEST" "SLOT-UNBOUND" "CDDR" "NREVERSE" "LET*" "DEFMETHOD" "MAPL"
   "BIT-ANDC1" "REM" "UPGRADED-COMPLEX-PART-TYPE" "IMAGPART" "LABELS"
   "PACKAGE-USE-LIST" "NSUBLIS" "BIT-NAND" "VECTOR" "COMPLEMENT" "UNBOUND-SLOT"
   "STRING=" "IDENTITY" "*DEFAULT-PATHNAME-DEFAULTS*" "WITH-SLOTS" "TRUENAME"
   "DEFTYPE" "TRANSLATE-LOGICAL-PATHNAME" "SET-EXCLUSIVE-OR" "STANDARD-METHOD"
   "INTERSECTION" "COUNT-IF-NOT" "MAKE-PACKAGE" "EQUALP" "MOST-NEGATIVE-FIXNUM"
   "DEFINE-COMPILER-MACRO" "*PRINT-CASE*" "WITH-CONDITION-RESTARTS" "REAL"
   "MINUSP" "SYNONYM-STREAM" "SIN" "BIT-VECTOR-P" "IGNORE-ERRORS"
   "*PRINT-MISER-WIDTH*" "FROUND" "DEFINE-SYMBOL-MACRO" "RASSOC" "DECLAIM"))
  
(in-package :faslpath.cl)

(cl:defun symbol-inherited-p (symbol)
  (not (eq (symbol-package symbol) *package*)))

(defmacro defun (name args &body body)
  (when (symbol-inherited-p name)
    (error "Attempted to redefine function definition of imported symbol ~A"
           name))
  `(cl:defun ,name ,args ,@body))

(defmacro defgeneric (fun-name lambda-list &body options)
  (when (symbol-inherited-p fun-name)
    (error "Attempted to redefine function definition of imported symbol ~A"
           fun-name))
  `(cl:defgeneric ,fun-name ,lambda-list ,@options))

(defmacro defvar (var &optional val doc)
  (when (symbol-inherited-p var)
    (error "Attempted to redefine definition of imported symbol ~A"
           var))
  `(cl:defvar ,var ,val ,doc))

(defmacro defparameter (var val &optional doc)
  (when (symbol-inherited-p var)
    (error "Attempted to redefine definition of imported symbol ~A"
           var))
  `(cl:defparameter ,var ,val ,doc))

(defmacro defclass (name direct-superclasses direct-slots &rest options)
  (when (symbol-inherited-p name)
    (error "Attempted to redefine class of imported symbol ~A"
           name))
  `(cl:defclass ,name ,direct-superclasses ,direct-slots ,@options))

(defmacro defstruct (name-and-options &rest slot-descriptions)
  (let ((n (typecase name-and-options
             (symbol name-and-options)
             (list (car name-and-options)))))
    (when (symbol-inherited-p n)
      (error "Attempted to redefine struct of imported symbol ~A"
             n))
  `(cl:defstruct ,name-and-options ,@slot-descriptions)))

(defmacro define-condition (name (&rest parent-types) 
                            (&rest slot-specs)
                            &body options)
  (when (symbol-inherited-p name)
    (error "Attempted to redefine condition of imported symbol ~A"
           name))
  `(cl:define-condition ,name ,parent-types ,slot-specs ,@options))
